package cn.tedu.micro.demo.emqx.serialize;

import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;

/**
 * 消息序列化器可以作为 全局数据序列化工具
 * 我们的序列化方式,提供方法将object序列化成byte[]
 * 提供将byte[]反序列化成 object对象 实现方式是json
 */
@Component
@Slf4j
public class MessageSerializer<T> {
    //序列化方法
    public byte[] serialize(T msg){
        String json = JSON.toJSONString(msg);
        return json.getBytes(StandardCharsets.UTF_8);
    }
    //反序列化方法
    public T deserialize(byte[] bytes,Class<T> clazz){
        return this.deserialize(new String(bytes,StandardCharsets.UTF_8),clazz);
    }
    //将string字符串的json反序列化
    public T deserialize(String json,Class<T> clazz){
        return JSON.parseObject(json,clazz);
    }
}
